/****************************************************************************
 *  QLyrics - A simple lyrics viewer.                                       *
 *  Copyright (C) 2008  hsys <hanshuiys@gmail.com>                          *
 *                                                                          *
 *  This program is free software; you can redistribute it and/or modify    *
 *  it under the terms of the GNU General Public License as published by    *
 *  the Free Software Foundation; either version 3 of the License, or       *
 *  (at your option) any later version.                                     *
 *                                                                          *
 *  This program is distributed in the hope that it will be useful,         *
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of          *
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           *
 *  GNU General Public License for more details.                            *
 *                                                                          *
 *  You should have received a copy of the GNU General Public License       *
 *  along with this program; if not, write to the Free Software Foundation, *
 *  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA       *
 ****************************************************************************/

#ifndef _CONFIGWINDOW_H_
#define _CONFIGWINDOW_H_

#include <QDialog>
#include <QStringListModel>
#include "ui_configwindow.h"

/** Configure window. */
class ConfigWindow: public QDialog {
    Q_OBJECT
public:
    /** Create the window and load all settings. */
    ConfigWindow(QWidget *parent = 0);

public slots:
    /** Save all settings and close the window. */
    void accept();

private:
    Ui::ConfigWindow ui;
    QStringListModel m_lyricsFolders;

    /** Load all settings. */
    void loadSettings();
    template<typename T>
        void testConfig(const QString& key, const T& defValue,
            const T& newValue, bool& setFlag);

private slots:
    void showFontPicker();
    /** Show a color picker window for specific widget. */
    void showColorPicker();
    void selectLyricsEditor();
    void showDownloadDir();
    void slotDownloadDirChanged(bool);
    void addSearchDir();
    void removeSearchDir();

signals:
    void signalReloadLyrics();
    void signalReloadPanel();
    void signalReloadWindow();
};

#endif
